Celovit vodnik za nastavitev virtualnih okolij Python z uporabo virtualenv in venv, ki razvijalcem po vsem svetu zagotavlja izolacijo projektov in upravljanje odvisnosti.
Nastavitev Python Virtualenv: Ustvarjanje Izoliranega Okolja
V svetu razvoja v Pythonu je upravljanje odvisnosti in zagotavljanje izolacije projektov ključnega pomena za ustvarjanje robustnih in vzdržljivih aplikacij. Eden najučinkovitejših načinov za to je uporaba virtualnih okolij. Virtualno okolje je samostojni imenik, v katerem je določen tolmač Pythona skupaj z nameščenimi paketi. To vam omogoča, da hkrati delate na več projektih, od katerih ima vsak svoj edinstven nabor odvisnosti, ne da bi prišlo do konfliktov zaradi različnih različic paketov.
Zakaj uporabljati virtualna okolja?
Razmislite o scenariju, v katerem delate na dveh projektih v Pythonu. Projekt A zahteva različico 1.0 določene knjižnice, medtem ko projekt B potrebuje različico 2.0 iste knjižnice. Brez virtualnih okolij bi namestitev knjižnice globalno verjetno povzročila težave z združljivostjo za enega od projektov. Virtualna okolja rešujejo ta problem tako, da zagotavljajo izolirane prostore za vsak projekt, da ima svoj nabor paketov.
Tukaj je nekaj ključnih prednosti uporabe virtualnih okolij:
- Izolacija odvisnosti: Vsak projekt ima svoj nabor odvisnosti, kar preprečuje konflikte.
- Upravljanje različic: Preprosto upravljajte različne različice paketov za različne projekte.
- Ponovljivost projekta: Zagotovite, da je vaš projekt mogoče enostavno replicirati na različnih računalnikih z istimi odvisnostmi.
- Čisto globalno okolje: Ohranja vašo globalno namestitev Pythona čisto in urejeno.
Nastavitev virtualnih okolij: virtualenv in venv
Obstajata dve osnovni orodji za ustvarjanje virtualnih okolij v Pythonu: virtualenv
in venv
. virtualenv
je paket tretje osebe, ki je prisoten že dolgo in ponuja široko paleto funkcij. venv
je vgrajen modul v Pythonu 3.3 in novejših različicah, ki zagotavlja lahko alternativo virtualenv
. Obe orodji dosežeta isti cilj: ustvarjanje izoliranih okolij Python.
Uporaba virtualenv
virtualenv
je priljubljeno in široko uporabljano orodje za ustvarjanje virtualnih okolij. Tukaj je, kako ga uporabljati:
Namestitev
Najprej morate namestiti virtualenv
. To lahko storite s pomočjo pip:
pip install virtualenv
Ustvarjanje virtualnega okolja
Ko je virtualenv
nameščen, lahko ustvarite virtualno okolje v svojem imeniku projekta. V terminalu se pomaknite v svoj imenik projekta in zaženite naslednji ukaz:
virtualenv myenv
Ta ukaz ustvari nov imenik z imenom myenv
(izberete lahko poljubno ime), ki vsebuje virtualno okolje. Imenik myenv
bo vseboval naslednje podimenike:
bin
: Vsebuje izvršilni program Python in skripte za aktiviranje.include
: Vsebuje glave C za prevajanje razširitev Python.lib
: Vsebuje imenik site-packages, kjer bodo nameščeni paketi.
Aktiviranje virtualnega okolja
Če želite uporabiti virtualno okolje, ga morate aktivirati. To bo spremenilo spremenljivke okolja vaše lupine, da bo uporabljala tolmač Pythona in pakete znotraj virtualnega okolja.
V sistemih Linux/macOS uporabite naslednji ukaz:
source myenv/bin/activate
V sistemu Windows uporabite naslednji ukaz:
myenv\Scripts\activate
Po aktiviranju boste opazili, da se poziv terminala spremeni, da označuje aktivno virtualno okolje (npr. (myenv) $
). Zdaj bodo vsi paketi, ki jih namestite s pipom, nameščeni znotraj virtualnega okolja in ne bodo vplivali na vašo globalno namestitev Pythona ali druga virtualna okolja.
Deaktiviranje virtualnega okolja
Ko končate z delom na projektu, lahko deaktivirate virtualno okolje z izvajanjem naslednjega ukaza:
deactivate
To bo vrnilo poziv terminala v normalno stanje in se vrnilo k uporabi vaše globalne namestitve Pythona.
Uporaba venv
venv
je vgrajen modul v Pythonu 3.3 in novejših različicah, ki zagotavlja lahko alternativo virtualenv
. Na splošno je priporočljivo uporabiti venv
, če uporabljate različico Pythona, ki ga vključuje.
Ustvarjanje virtualnega okolja
Če želite ustvariti virtualno okolje z uporabo venv
, se v terminalu pomaknite v svoj imenik projekta in zaženite naslednji ukaz:
python3 -m venv myenv
Ta ukaz ustvari nov imenik z imenom myenv
(ali katero koli ime, ki ga izberete), ki vsebuje virtualno okolje, podobno virtualenv
.
Aktiviranje virtualnega okolja
Postopek aktivacije za venv
je enak kot za virtualenv
. V sistemih Linux/macOS uporabite naslednji ukaz:
source myenv/bin/activate
V sistemu Windows uporabite naslednji ukaz:
myenv\Scripts\activate
Po aktivaciji bo poziv terminala označeval aktivno virtualno okolje in vsi paketi, ki jih namestite, bodo izolirani znotraj okolja.
Deaktiviranje virtualnega okolja
Deaktiviranje okolja venv
je prav tako enako kot pri virtualenv
:
deactivate
Upravljanje odvisnosti s pip
Ko aktivirate virtualno okolje, lahko uporabite pip za namestitev, nadgradnjo in odstranitev paketov. Tukaj je nekaj pogostih ukazov pip:
- Namestitev paketa:
pip install package_name
(npr.pip install requests
) - Namestitev določene različice paketa:
pip install package_name==version
(npr.pip install requests==2.26.0
) - Nadgradnja paketa:
pip install --upgrade package_name
(npr.pip install --upgrade requests
) - Odstranitev paketa:
pip uninstall package_name
(npr.pip uninstall requests
) - Seznam nameščenih paketov:
pip list
alipip freeze
Ustvarjanje datoteke Requirements
Če želite zagotoviti, da je odvisnosti vašega projekta mogoče enostavno replicirati na drugih računalnikih, je najbolje ustvariti datoteko requirements.txt
. Ta datoteka navaja vse pakete in njihove različice, ki so nameščene v vašem virtualnem okolju.
Če želite ustvariti datoteko requirements.txt
, aktivirajte svoje virtualno okolje in zaženite naslednji ukaz:
pip freeze > requirements.txt
To bo ustvarilo datoteko z imenom requirements.txt
v vašem imeniku projekta. Nato lahko to datoteko vključite v sistem za nadzor različic svojega projekta (npr. Git), tako da lahko drugi preprosto namestijo iste odvisnosti.
Namestitev iz datoteke Requirements
Če želite namestiti odvisnosti, navedene v datoteki requirements.txt
, aktivirajte svoje virtualno okolje in zaženite naslednji ukaz:
pip install -r requirements.txt
To bo namestilo vse pakete in njihove določene različice iz datoteke requirements.txt
.
Najboljše prakse za uporabo virtualnega okolja
Tukaj je nekaj najboljših praks, ki jih morate upoštevati pri uporabi virtualnih okolij:
- Ustvarite virtualno okolje za vsak projekt: To zagotavlja, da ima vsak projekt svoj izoliran nabor odvisnosti.
- Posodobite svojo datoteko requirements: Redno posodabljajte datoteko
requirements.txt
, da odraža trenutne odvisnosti vašega projekta. - Uporabite nadzor različic: Vključite svoj imenik virtualnega okolja v datoteko
.gitignore
svojega projekta, da preprečite, da bi bil vpisan v nadzor različic. Zavezujte samo datotekorequirements.txt
. - Poimenujte svoja virtualna okolja dosledno: Uporabite dosledno konvencijo poimenovanja za svoja virtualna okolja, da se izognete zmedi. Na primer, lahko jih poimenujete
.venv
alivenv
. - Uporabite upravljalnik virtualnih okolij: Razmislite o uporabi upravljalnika virtualnih okolij, kot sta
virtualenvwrapper
aliconda
, da poenostavite upravljanje več virtualnih okolij.
Upravljalniki virtualnih okolij
Čeprav sta virtualenv
in venv
odlična orodja za ustvarjanje virtualnih okolij, lahko postanejo okorna za upravljanje pri delu z več projekti. Upravljalniki virtualnih okolij zagotavljajo dodatne funkcije in priročnost za upravljanje virtualnih okolij.
virtualenvwrapper
virtualenvwrapper
je niz razširitev za virtualenv
, ki olajša ustvarjanje, upravljanje in delo z virtualnimi okolji. Zagotavlja ukaze za ustvarjanje, aktiviranje, deaktiviranje in brisanje virtualnih okolij ter za seznam razpoložljivih okolij.
Če želite namestiti virtualenvwrapper
, uporabite pip:
pip install virtualenvwrapper
Nastavitev in uporaba virtualenvwrapper
se razlikujeta glede na vaš operacijski sistem. Za podrobna navodila glejte dokumentacijo virtualenvwrapper
.
conda
conda
je sistem za upravljanje paketov, odvisnosti in okolij z odprto kodo. Pogosto se uporablja v podatkovni znanosti in znanstvenem računalništvu, vendar se lahko uporablja tudi za splošni razvoj v Pythonu. conda
vam omogoča ustvarjanje in upravljanje virtualnih okolij ter namestitev in upravljanje paketov.
Če želite namestiti conda
, prenesite in namestite Anaconda ali Miniconda s spletne strani Anaconda.
Če želite ustvariti novo okolje conda, uporabite naslednji ukaz:
conda create --name myenv python=3.9
Če želite aktivirati okolje:
conda activate myenv
Če želite deaktivirati okolje:
conda deactivate
Conda ponuja obsežen nabor orodij za upravljanje odvisnosti in okolij, zaradi česar je priljubljena izbira za zapletene projekte.
Globalni pomisleki in najboljše prakse
Pri delu v globalnih timih ali uvajanju aplikacij v različnih regijah upoštevajte te dejavnike:
- Dosledne različice Pythona: Zagotovite, da vsi člani ekipe uporabljajo isto različico Pythona za razvoj. To preprečuje nepričakovane težave z združljivostjo med integracijo in uvajanjem. Na primer, razvojna ekipa v Tokiu na Japonskem in druga v Londonu v Združenem kraljestvu bi se morali dogovoriti o eni sami različici Pythona.
- Standardizirana okolja: Uporabite orodja, kot sta Docker ali Vagrant, skupaj z virtualnimi okolji, da ustvarite dosledna razvojna in uvajalna okolja v različnih operacijskih sistemih in infrastrukturah. To zagotavlja, da se bo vaša aplikacija obnašala, kot je pričakovano, ne glede na temeljni sistem. Predstavljajte si, da uvajate aplikacijo, razvito na macOS, na strežnik Linux; uporaba Dockerja zagotavlja dosledno vedenje.
- Pripinjanje odvisnosti: Uporabite natančne številke različic v svoji datoteki `requirements.txt`. To zagotavlja, da vsi uporabljajo popolnoma iste različice odvisnosti, kar omogoča blaženje potencialnih napak, ki jih povzročajo različne različice knjižnic. Namesto `requests>=2.0` uporabite `requests==2.28.1`.
- Združljivost med platformami: Preizkusite svojo aplikacijo v različnih operacijskih sistemih (Windows, macOS, Linux), da zgodaj v procesu razvoja prepoznate in odpravite morebitne težave, specifične za platformo. Cevi CI/CD, ki temeljijo na oblaku, lahko avtomatizirajo testiranje na različnih platformah.
- Časovni pasovi: Pri delu s časovno občutljivimi podatki uporabite dosleden časovni pas (npr. UTC) in ustrezno obravnavajte pretvorbe časovnih pasov. Izogibajte se zanašanju na lokalne časovne pasove, saj se lahko razlikujejo glede na različne regije.
- Kodiranje znakov: Uporabite kodiranje UTF-8 za vse besedilne datoteke (vključno s izvorno kodo in konfiguracijskimi datotekami), da zagotovite pravilno ravnanje z mednarodnimi znaki.
Odpravljanje pogostih težav
Tukaj je nekaj pogostih težav, na katere se lahko srečate pri delu z virtualnimi okolji, in kako jih rešiti:
- Težave z aktiviranjem: Če imate težave z aktiviranjem virtualnega okolja, se prepričajte, da uporabljate pravilno aktivacijsko skripto za vaš operacijski sistem in lupino. Preverite pot do aktivacijske skripte in se prepričajte, da je izvršljiva.
- Težave z namestitvijo paketa: Če imate težave z namestitvijo paketov, se prepričajte, da ste aktivirali virtualno okolje in da uporabljate pravilno različico pip. Morda boste morali tudi nadgraditi pip na najnovejšo različico.
- Konflikti odvisnosti: Če naletite na konflikte odvisnosti, poskusite uporabiti
pipdeptree
alipip-tools
za analizo svojih odvisnosti in prepoznavanje spornih paketov. Morda boste morali nadgraditi ali znižati nekatere pakete, da rešite konflikte. - Poškodba virtualnega okolja: Če se vaše virtualno okolje poškoduje, ga lahko poskusite izbrisati in ga znova ustvariti od začetka.
Zaključek
Virtualna okolja so bistveno orodje za razvijalce Pythona, ki zagotavljajo izolacijo odvisnosti, upravljanje različic in ponovljivost projekta. Z uporabo virtualenv
ali venv
lahko zagotovite, da so vaši projekti med seboj izolirani in da vaša globalna namestitev Pythona ostane čista. Ne pozabite ustvariti datoteko requirements.txt
za vsak projekt, da olajšate enostavno replikacijo odvisnosti. Z upoštevanjem najboljših praks, opisanih v tem priročniku, lahko poenostavite svoj potek dela pri razvoju v Pythonu in ustvarite bolj robustne in vzdržljive aplikacije. Za globalno sodelovanje so standardizirana okolja in skrbno upravljanje odvisnosti najpomembnejši.